MetaInsight

An R shiny app for network meta-analysis

Simon Smart

14th November 2025

Network meta-analysis can help determine the “best” treatment option

Complex reviews require extensive statistical and programming knowledge

  • Bewildering R packages:
    • BUGSnet, bnma, coda, gemtc, meta, metafor, netmeta
  • Some dependent on JAGS which may be hard to install
  • Require data in different formats and use different terminology

Shiny removes barriers for accessing cutting-edge methods

  • MetaInsight launched in 2019, has users worldwide and increasing citations and use in CROs
  • Originally developed by statisticians, but increasingly in collaboration with developers (Bradbury et al. 2024)

Lack of reproducibility can limit uptake

  • {shinyscholar} was forked from {wallace} to make development of reproducible apps easier
  • Convert core functionality into functions and package
  • The app becomes an interface to the functions, purely focused on interactivity

Reproducibility relies on a strict structure

  • Each module has an id made up of the component and module e.g. summary_network
  • The module calls a synonymous function summary_network()
  • Input values are stored in common$meta$summary_network$<input id>
  • Values are knitted into an .Rmd chunk and combined to create a .qmd

Reproducibility relies on a strict structure

```{asis, echo = {{summary_network_knit}, eval = {{summary_network_knit}}, include = {{summary_network_knit}}}}
### Display the networks for the original data and data with excluded studies.
```
```{asis, echo = {{summary_network_knit}, eval = {{summary_network_knit}}, include = {{summary_network_knit}}}}
{r,  results = 'asis'}
```
```{r, echo = {{summary_network_knit}, include = {{summary_network_knit}}}}
network_style <- {{summary_network_style}}

summary_network_all <- summary_network(frequentist_all, bugsnet_all, network_style, {{summary_network_label_all}}, "Network plot of all studies")
htmltools::HTML(summary_network_all)
```

Reproducibility relies on a strict structure

### Display the networks for the original data and data with excluded studies.

```{r, results = 'asis'}
network_style <- "netplot"

summary_network_all <- summary_network(frequentist_all, bugsnet_all, network_style, 1, "Network plot of all studies")
htmltools::HTML(summary_network_all$svg)
```

Reproducibility also enables improved reporting

  • Use as the basis for producing a publication
  • Rendered in the app to produce an html report

Risk of bias

  • MetaInsight enables sensitivity analyses by excluding studies
  • During reviews, risk of bias information can be collected e.g.
    • Randomisation, blinding, missing data
  • Users can now upload these scores and use them to guide sensitivity analyses

Integration with CiNEMA helps to evaluate

  • is an app developed to evaluate confidence in NMA results
  • Uses risk of bias scores for studies to evaluate evidence for treatments
  • https://cinema.ispm.unibe.ch/
  • https://doi.org/10.1371/journal.pmed.1003082
  • https://doi.org/10.1002/cl2.1080

Acknowledgments

  • Tom Morris, Janion Nevill, Ryan Field, Alex Sutton, Nicola Cooper
  • Wellcome
  • NIHR
  • Chan Zuckerburg Initiative